

package jcpcotizaciones.Control;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import jcpcotizaciones.Modelo.TipoDeMaquina;


public class ControlTipoDeMaquina {
    private static List tipoMaquina;
    private static Connection con;

    public static void agregarTipoDeMaquina (TipoDeMaquina tm) throws SQLException, Exception{
        ManejadorBaseDatos mbd= ManejadorBaseDatos.getInstancia();
        mbd.conectar();
        con= mbd.getConexion();
        if (con == null ){
          throw new SQLException(" No hay conexion ");
        }

        PreparedStatement pst = null;
        try {
          pst = con.prepareStatement("Insert Into tipomaquina values(?,?,?,?,?,?,?,?)");
          pst.setString(1,tm.getCodigoMaquina());
          pst.setString(2,tm.getNombre());
          pst.setString(3,tm.getTamanoMaximo());
          pst.setString(4,tm.getTamanoMinimo());
          pst.setDouble(5,tm.getValorMillar());
          pst.setDouble(6,tm.getValorMillarNumeracion());
          pst.setDouble(7,tm.getValorPlancha());
          pst.setString(8,tm.getProveedor().getCodigoProvee());

            pst.executeUpdate();
        }finally {
            if (pst != null) {
                 pst.close();
            }
        }
    }

    public static TipoDeMaquina BuscarTipoDeMaquina(String cod) throws SQLException{
         ResultSet rs = null;
         PreparedStatement pst = null;
         TipoDeMaquina tm = null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("select * from tipomaquina where codtipomaquina = ?");
         pst.setString(1, cod);

         rs = pst.executeQuery();
         while(rs.next()) {
             tm = TipoDeMaquina.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return tm;
    }
    }

    public static boolean ModificarTipoDeMaquina(TipoDeMaquina tm, String cod) throws SQLException, Exception{
      if ( BuscarTipoDeMaquina(cod) == null) {
          throw new SQLException ("Tipo de máquina no registrada ");
      }
       PreparedStatement pst = null;
       boolean res=false;
       try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("Update tipomaquina set codtipomaquina = ?, nombre = ?, tamMaximo =?, tamMinimo = ?, vrMillar =?, vrMillarNumeracion =?, vrPlancha=?, proveedor_codproveedor=?  WHERE codtipomaquina = ?" );
          pst.setString(1,tm.getCodigoMaquina());
          pst.setString(2,tm.getNombre());
          pst.setString(3,tm.getTamanoMaximo());
          pst.setString(4,tm.getTamanoMinimo());
          pst.setDouble(5,tm.getValorMillar());
          pst.setDouble(6,tm.getValorMillarNumeracion());
          pst.setDouble(7,tm.getValorPlancha());
          pst.setString(8,tm.getProveedor().getCodigoProvee());
          pst.setString(9,cod);

         int r= pst.executeUpdate();
         if (r != 0) {
          res = true;
       }
       } finally {
          if (pst != null) {
            pst.close();
          }
       }
       return res;
     }
 public static void EliminarTipoDeMaquina(String cod) throws SQLException, Exception{
         if (BuscarTipoDeMaquina(cod) == null) {
        throw new SQLException("No hay elemento clave de la clase tipomaquina");
     }
     PreparedStatement pst = null;

     try {
        ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
        mbd.conectar();
        con=mbd.getConexion();
        pst = con.prepareStatement("delete from tipomaquia where codtipomaquina = ?");
        pst.setString(1, cod);
        pst.executeUpdate();

     } finally {
        if (pst != null) {
           pst.close();
        }
     }

     }
 public static void listarTipoDeMaquina() throws SQLException, Exception {
     ResultSet rs = null;
     PreparedStatement pst = null;
     tipoMaquina = new LinkedList();
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
        pst = con.prepareStatement("select * from tipomaquina");
        rs = pst.executeQuery();
        while(rs.next()) {
                tipoMaquina.add(TipoDeMaquina.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
}

    /**
     * @return the tipoMaquina
     */
    public static List getTipoMaquina() {
        return tipoMaquina;
    }

    /**
     * @param aTipoMaquina the tipoMaquina to set
     */
    public static void setTipoMaquina(List aTipoMaquina) {
        tipoMaquina = aTipoMaquina;
    }

}
